﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
//using ESRI.ArcGIS.Geodatabase;
using DIWAGIS.Modules;

namespace DIWAGIS.ApplicationLayer.HeThong
{
    public partial class frmDangNhapHeThong : Form
    {
        public frmDangNhapHeThong()
        {
            InitializeComponent();
        }

        Helper help;

        private void frm_connectionDB_Load(object sender, EventArgs e)
        {
            help = new Helper();
            loadConfig();
        }

        private void btLogin_Click(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;
            if (LoginDB())
            {
                if (checkLuuThongTin.Checked)
                {
                    string strfile = "";
                    help = new Helper();
                    //strfile = txtDatabase.Text;
                    strfile = txtServer.Text + "," + txtDatabase.Text + "," + txtService.Text + "," + txtUsername.Text + "," + txtSDE.Text;
                    help.write_FileConfig(strfile);
                }
                this.Close();
            }
            Cursor.Current = Cursors.Default;
        }

        private void btCancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        /// <summary>
        /// đọc file cấu hình vào trong form 
        /// 
        /// </summary>
        private void loadConfig()
        {
            string str = "";
            str = help.getConfigInTextFile();

            string[] array;
            array = str.Split(',');

            if (array.Length > 4)
            {

                txtServer.Text = array[0];
                
                txtDatabase.Text = array[1];
                txtService.Text = array[2];
                txtUsername.Text = array[3];
                txtSDE.Text = array[4];

            }

        }

        /// <summary>
        /// Đăng nhập vào hệ thống
        /// </summary>
        /// <returns> True nếu đang nhập thành công , False nếu thất bại </returns>
        private Boolean  LoginDB() 
        {

            Helper help;
            help = new Helper();
            
            string checkResult = "";

            generalVariable.server = txtServer.Text.Trim();
            generalVariable.database = txtDatabase.Text.Trim();
            generalVariable.username = txtUsername.Text.Trim();
            generalVariable.password = txtPassword.Text.Trim();
            generalVariable.service = txtService.Text.Trim();
            generalVariable.sde = txtSDE.Text.Trim();

            checkResult += help.checkStringLength(generalVariable.server, "", 250, 1, "Vui lòng nhập tên máy chủ");
            checkResult += help.checkStringLength(generalVariable.database, "", 250, 1, "Vui lòng nhập tên cơ sở dữ liệu");
            checkResult += help.checkStringLength(generalVariable.service, "", 250, 1, "Vui lòng nhập tên dịch vụ");
            checkResult += help.checkStringLength(generalVariable.username, "", 250, 1, "Vui lòng nhập tên đăng nhập");
            checkResult += help.checkStringLength(generalVariable.password, "", 250, 1, "Vui lòng nhập mật khẩu đăng nhập");
            checkResult += help.checkStringLength(generalVariable.sde, "", 250, 1, "Vui lòng nhập vào phiên bản");

            if (checkResult == "")
            {
                connectionDB connec;
                connec = new connectionDB();

                string[] array = generalVariable.server.Split('\\');

                generalVariable.ICurrentWorkspace = connec.openSDEWorkspaceAccount(array[0], generalVariable.service, generalVariable.database, generalVariable.username, generalVariable.password, generalVariable.sde);


                if (generalVariable.ICurrentWorkspace != null)
                {

                    //IWorkspaceFactorySchemaCache workspaceFactorySchemaCache =(IWorkspaceFactorySchemaCache)workspaceFactory;


                    help.write_FileConfig(generalVariable.server + "," + generalVariable.database + "," + generalVariable.service + "," + generalVariable.username + "," + generalVariable.sde);

                    ConfigInterface config;
                    config = new ConfigInterface();

                    config.themLayerFile(generalVariable.mapControl);

                   
                    generalVariable.mapControl.MapScale = 10000;
                                        
                   // MessageBox.Show("Thông báo , đăng nhập thành công ", generalVariable.nameProgram, MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return true;
                }
                else
                {
                    //MessageBox.Show("Thông báo , chương trình không thể đăng nhập vào hệ thống ", generalVariable.nameProgram, MessageBoxButtons.OK, MessageBoxIcon.Error );
                    return false ;
                }


            }
            else
            {
                MessageBox.Show("Thông báo : \n " + checkResult, generalVariable.nameProgram, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }

        }


    }
}
